/*
    接雨水
    给定 n 个非负整数表示每个宽度为1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水

    示例 1：
    输入 height = [0,1,0,2,1,0,1,3,2,1,2,1]
    输出：6
    解释：上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接6个单位的雨水（蓝色部分表示雨水)
    

    示例 2：
    输入：height = [4,2,0,3,2,5]
    输出： 9
*/
let arr = [0,1,0,2,1,0,1,3,2,1,2,1]
// function watersum(arr = []){
//     if(arr.length === 0){
//         return 0
//     }
//     let res = 0
//     let n = arr.length
//     for(let i=1;i<n-1;i++){
//         let height = arr[i];
//         let l_max = 0;
//         let r_max = 0;
//         let currentMax;
//         for(let j=i;j<n;j++){
//             //右边当前最高的柱子
//             r_max = Math.max(r_max,arr[j])
//         }
//         for(let j=i;j>=0;j--){
//             //左边最高的柱子
//             l_max = Math.max(l_max,arr[j])
//         } 
//         currentMax = Math.min(l_max,r_max)
//         res += currentMax-height
//     }
//     return res
// }   
// console.log(watersum(arr))

function waterSum(arr = []){
    if(arr.length == 0){
        return 0
    }
    let num = arr.length
    let total = 0;
    for(let i=1;i<num-1;i++){
        let currentMax
        let height = arr[i];
        let rightMax = 0;
        let leftMax = 0;
        for(let j=i;j<num;j++){
            //右边最高的柱子
            rightMax = Math.max(rightMax,arr[j])
        }
        for(let h=i;h>=0;h--){
            //左边最高的柱子
            leftMax = Math.max(leftMax,arr[h])
        }
        currentMax = Math.min(leftMax,rightMax)
        total += currentMax-height
    }
    return total
}
console.log(waterSum(arr))